﻿using Volo.Abp.Domain.Entities.Auditing;

namespace FlyingEye.DeviceMaintenance
{
    /// <summary>
    /// 设备部件模型
    /// 
    /// todo : 具体的保养过期时间，是怎么获取的？
    /// </summary>
    public class DevicePartModel : AuditedEntity<Guid>
    {
#pragma warning disable CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
        private DevicePartModel()
#pragma warning restore CS8618 // 在退出构造函数时，不可为 null 的字段必须包含非 null 值。请考虑声明为可以为 null。
        {
        }

        public DevicePartModel(
            Guid deviceMaintenanceId,
            string devicePartName,
            string maintenanceStatus,
            int currentLifetime,
            int accumulatedDowntime,
            int economicLifetimeThreshold)
        {
            DeviceMaintenanceId = deviceMaintenanceId;
            DevicePartName = devicePartName;
            MaintenanceStatus = maintenanceStatus;
            CurrentLifetime = currentLifetime;
            AccumulatedDowntime = accumulatedDowntime;
            EconomicLifetimeThreshold = economicLifetimeThreshold;
        }

        /// <summary>
        /// 保养项目 ID
        /// </summary>
        public Guid DeviceMaintenanceId { get; set; }

        /// <summary>
        /// 部件名称
        /// </summary>
        public string DevicePartName { get; set; }

        /// <summary>
        /// 部件保养 <see cref="Consts.MaintenanceStatus"/>
        /// </summary>
        public string MaintenanceStatus { get; set; }

        // 当前寿命
        public int CurrentLifetime { get; set; }

        // 停机寿命（累计停机时长）
        public int AccumulatedDowntime { get; set; }

        // 经济寿命阈值
        public int EconomicLifetimeThreshold { get; set; }
    }
}
